package com.healthcloud.dao;

import java.util.List;

import org.apache.ibatis.annotations.Param;

import com.healthcloud.entity.Condition;
import com.healthcloud.entity.TestResult;
import com.healthcloud.entity.TestResultApp;
import com.healthcloud.utils.PageParam;
import com.healthcloud.vo.PatientVo;


public interface TestResultMapper extends CRUDMapper<TestResult, Long> {

	/**
	 * 查询检测结果,按时间倒序
	 * @param conditions
	 * @return List<TestResult>
	 */
	List<TestResult> orderByTime(@Param("conditions") List<Condition<Object>> conditions);
	/**
	 * 查询检测结果并分组
	 * @param conditions
	 * @return List<TestResult>
	 */
	List<TestResult> groupBy(@Param("conditions") List<Condition<Object>> conditions,@Param("groupBy")String groupBy);
	/**
	 * 查询检测结果按日期分组
	 * @param conditions
	 * @return List<TestResult>
	 */
	List<PatientVo> groupBy2(@Param("conditions") List<Condition<Object>> conditions,@Param("groupBy")String groupBy);
	/**
	 * 获取smart检测数据
	 * 109<=id<=130
	 * @param idCard
	 * @param testTimeFrom
	 * @param testTimeTo
	 * @return List<TestResult>
	 */
	List<TestResult> getSmart(@Param("idCard") String idCard, @Param("testTimeFrom")String testTimeFrom, @Param("testTimeTo")String testTimeTo);

	/**
	 * 获取smart检测数据testKindCode，testKindName，testTime分组信息
	 * 109<=id<=130
	 * @param idCard		身份证号码
	 * @param testTimeFrom	开始时间
	 * @param testTimeTo	结束时间
	 * @return List<TestResult>
	 */
	List<TestResult> getSmartGroup(@Param("idCard") String idCard, @Param("testTimeFrom")String testTimeFrom, @Param("testTimeTo")String testTimeTo);


	/**
	 * 根据身份证号查找
	 * @param idCard		身份证号码
	 * @return List<TestResult>
	 */
	List<TestResult> findByIdCard(@Param("idCard")String idCard , @Param("pageParam")PageParam pageParam);


	int findCountByIdCard(String idCard);

	/**
	 * 新版移动端查询体检数据
	 * @author lixx 20160525
	 */
	List<TestResultApp> searchListByDay(@Param("entity") TestResultApp entity,@Param("pageParam") PageParam pageParam);
	/**
	 * 查询血糖报表
	 * @param errorStatus 异常状态
	 * @param reportTime 检测时间
	 * @param idCard 身份证号
	 * @param pageParam 分页
	 * @return
	 */
	List bsReport(@Param("errorStatus") Integer errorStatus, @Param("reportTime") String reportTime,
				  @Param("idCard")String idCard, @Param("pageParam")PageParam pageParam);

	/**
	 * 查询血糖检测次数
	 * @param idCard 身份证号
	 * @param errorStatus 异常状态
	 * @param reportTime
	 * @return
	 */
	Integer bsCount(@Param("idCard") String idCard, @Param("errorStatus") Integer errorStatus,
					@Param("reportTime") String reportTime);
	/**
	 * 查询血压报表
	 * @param errorStatus 异常状态
	 * @param reportTime 检测时间
	 * @param idCard 身份证号
	 * @param pageParam 分页
	 * @return
	 */
	List bpReport(@Param("errorStatus") Integer errorStatus, @Param("reportTime") String reportTime,
				  @Param("idCard")String idCard, @Param("pageParam")PageParam pageParam);

	/**
	 * 血压检测次数
	 * @param errorStatus 异常状态
	 * @param idCard 身份证号
	 * @param reportTime
	 * @return
	 */
	Integer bpCount(@Param("errorStatus") Integer errorStatus, @Param("idCard")String idCard,
					@Param("reportTime") String reportTime);

}
